Many protocols exist for reliably conveying data packets from one communication device to another via unreliable communication channels. In some such protocols (such as, automatic repeat request (ARQ) protocols), a sending device transmits data packets to a target device and, upon receiving the data packets, the target device transmits corresponding acknowledgment (ACK) messages back to the sending device. Typically, the sending device will set a timer upon transmitting a data packet or group of data packets. Unless an ACK is received for a particular data packet or group of data packets before the corresponding timer expires, the data packet or group of data packets is retransmitted. Thus, reliable data transfer is achieved.
In timer-based protocols, the time-out period can affect data transfer characteristics, such as data throughput and delay. For example, when the time-out period is too short, a sending device will retransmit data packets prematurely. A target device may be about to transmit an ACK for a particular data packet. But, if a timer corresponding to the data packet expires in the sending device before the ACK is actually received by the sending device, the data packet is retransmitted by the sending device, notwithstanding the fact that the data packet was received by the target device. Because the time-out period used did not allow the target device to receive, process, and acknowledge the data packet before the timer expired, the data packet was not only unnecessarily retransmitted, but also unnecessarily received. Such unnecessary retransmissions inefficiently utilize the communication resources shared by the sending and target devices and, thereby, reduce potential data throughput.
On the other hand, when the time-out period is too long, data packets that need to be retransmitted are unnecessarily delayed. Retransmission delay increases the overall data transfer delay and can lead to reduced data throughput. For example, the target device may need to buffer received data while waiting for retransmissions of missing data. When such buffers fill, data transfer is effectively halted until some of the retransmitted data packets are received. Thus, the data throughput is reduced.
Therefore, a time-out period which is no longer than the time needed for round-trip link travel and target device processing is optimal. When only one communication device is sending data to another communication device (one-to-one communication), the optimal time-out period is relatively easy to determine. However, when many communication devices are sending data to a single communication device via a shared communication resource (many-to-one communication), the optimal time-out period is much more difficult to determine.
The time between transmitting a particular data packet and receiving a corresponding ACK (ACK turn-around time) may vary considerably in many-to-one communications. A period of time in which few of the sending devices are transmitting data may be followed by a period of time in which many of the sending devices are transmitting data. Typically, when many sending devices are transmitting data to one target device, the queuing for transmission of the corresponding ACKs results in greater delays than when only a few sending devices are transmitting data. As the data traffic varies, the queuing delays experienced by untransmitted ACKs vary and, therefore, ACK turn-around times vary. In one-to-one communications, the ACK turn-around time may vary as the sending device intermittently transmits data. But, with the much greater traffic fluctuations of many-to-one communications, the variability of the ACK turn-around time is amplified.
Such fluctuations in ACK turn-around time make determining an optimal time-out period much more difficult for many-to-one communications. If the time-out period is set relatively long to account for periods of heavy traffic, added delay and lower throughput will likely result. If the time-out period is instead set relatively short to accommodate normal traffic levels, many premature retransmissions will occur during periods of heavy traffic and data throughput will suffer. The greater the fluctuation in ACK turn-around time, the less adequate any particular time-out period will be. Thus, timer-based protocols are not as well suited for many-to-one communications as they are for one-to-one communications.
Therefore, a need exists for a method and apparatus of conveying data packets reliably that overcomes the inadequacies of timer-based methods in many-to-one communications.